﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dao.Intermediarios;
using Dao;
using _InformaticaIndustrial_DerivdosVinicos.DTO;

namespace _InformaticaIndustrial_DerivdosVinicos.Interfaz
{
    public partial class BMEstructuraProducto : Form
    {
        private Principal principal;
        IPProducto ipProducto = new IPProducto();
        IPEstructuraProducto ipEP = new IPEstructuraProducto();

        public BMEstructuraProducto()
        {
            InitializeComponent();
            LoadcomboProducto();
            //dataGridViewFormula.AutoGenerateColumns = false;
        }

        public BMEstructuraProducto(Principal principal)
        {
            InitializeComponent();
            this.principal = principal;
            LoadcomboProducto();
            dataGridViewFormula.ReadOnly = false;
        }

        private void LoadcomboProducto()
        {
            comboBoxProducto.DataSource = ipProducto.getAll<Producto>();
        }

        private void comboBoxProducto_SelectedValueChanged(object sender, EventArgs e)
        {
            textBoxNOMBRES.Text = "";
            string idP = comboBoxProducto.SelectedValue.ToString();
            IList<EstructuraProducto> listaEP = ipEP.getByCriterio<EstructuraProducto>("", "", idP);
            dataGridViewFormula.DataSource = listaEP;//ipEP.getByCriterio<EstructuraProducto>("", "", idP);

            foreach (var item in listaEP)
            {
                if (item.IdMateriaPrima != null)
                {
                    textBoxNOMBRES.Text += item.MateriaPrima.nombre + "\n\n";
                }
                else
                {
                    textBoxNOMBRES.Text += item.Componente.nombre + "\n\n"; ;
                }
            }
        }

        private void dataGridViewFormula_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            switch (e.ColumnIndex)
            {
                case 0:
                    modificarMA(e.RowIndex);
                    break;
                case 1:
                    eliminarMA(e.RowIndex);
                    break;
                default:
                    break;
            }
        }
        private void modificarMA(int r)
        {
            try
            {
                EstructuraProducto estProd = (EstructuraProducto)(dataGridViewFormula.Rows[r].DataBoundItem);
                Intermediario.confirmarCambios();

                MessageBox.Show("Estructura Producto Modificado");
                //dataGridViewFormula.DataSource = ipEP.getAll<EstructuraProducto>().Where(e => e.Activo == true).ToList();
            }
            catch (Exception)
            {
                throw;
            }
        }

        private void eliminarMA(int r)
        {
            try
            {
                EstructuraProducto estProd = (EstructuraProducto)(dataGridViewFormula.Rows[r].DataBoundItem);
                ipEP.Delete(Convert.ToInt16(dataGridViewFormula.Rows[r].Cells["IdEP"].Value));
                Intermediario.confirmarCambios();
                MessageBox.Show("Estructura Producto Eliminado");
                dataGridViewFormula.DataSource = ipEP.getAll<EstructuraProducto>().Where(e=> e.IdProducto == estProd.IdProducto && e.Activo == true).ToList();
                //dataGridViewFormula.Rows.RemoveAt(r);
            }
            catch (Exception)
            {
                throw;
            }
        }

        private void buttonCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
